CC=gcc
LEX=flex
YACC=bison

YACCFLAGS= -d 

#DCCFLAGS= -DDEBUG=1 -DTRACE=1
DCCFLAGS= -DTRACE=1
DYFLAGS= -t -v -d 

all: interprete

interprete: sintax.o lexic.o message.o
	$(CC) $^ -o $@

sintax.c: interprete.y
	$(YACC) $(YACCFLAGS) -o $@ $^ 

lexic.c: interprete.l sintax.h
	$(LEX) -o$@ interprete.l 

message.o: message.c 

debug: interpretedebug

interpretedebug: sintaxd.o lexicd.o messaged.o  
	$(CC) $(DCCFLAGS) $^ -o $@

sintaxd.c: interprete.y
	$(YACC) $(DYFLAGS) -o $@ $^ 
	mv sintaxd.h sintax.h

lexicd.c: interprete.l sintax.h
	$(LEX) -o$@ interprete.l 

sintaxd.o: sintaxd.c 
	$(CC) $(DCCFLAGS) -c $^ -o $@

lexicd.o: lexicd.c 
	$(CC) $(DCCFLAGS) -c $^ -o $@

messaged.o: message.c 
	$(CC) $(DCCFLAGS) -c $^ -o $@

clean:
	rm *.o lexic.c sintax.c sintax.h interprete interpretedebug *.err *~

mrproper:
	rm *.o *.output lexicd.c sintax.c sintaxd.c sintax.h scd *.err 
